package org.lib.mysqlhello.common;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import lombok.extern.slf4j.Slf4j;

/**
 * 统一异常处理
 * 使用切面时，如果处理了异常 并且 返回了值，则不会执行到这里
 * @author ben
 * @date 2021-08-22 13:02:34 CST
 */
@ControllerAdvice(value = {"org.lib.mysqlhello"})
@ResponseBody
// 同上面两个注解等效
//@RestControllerAdvice(value = {"org.lib.mysqlhello"})
@Slf4j
public class AppExceptionHandler {

	/**
	 * 注解 ResponseBody 是关键
	 * @author ben
	 * @date 2021-08-22 14:06:17 CST
	 * @param e
	 * @return
	 */
	@ExceptionHandler(value = {Exception.class})
	ResultVO<Object> handleException(Exception e) {
		log.error("发生异常: e={}, e.message={}", e.getClass(), e.getMessage());
		return ResultVO.getFailed(500, "发生异常-AppExceptionHandler", e.getMessage());
	}
	
}
